//
// Created by 21577 on 2025/4/10.
//
#include<stdio.h>
#include<stdlib.h>
#define MAX_SIZE 100
// 定义顺序表的结构
typedef struct {
    int data[MAX_SIZE];
    int length;
}Seqlist;
// 初始化顺序表
void initSqlist(Seqlist* L){
    L->length = 0;
}
// 插入元素到有序表的末尾
void insertElemt(Seqlist* L, int element){
    if(L->length < MAX_SIZE){
        L->data[L->length++] = element;
    }
}
// 有序表的和并操作，两个有序表中的元素都是有序的
void mergeList(Seqlist* list1, Seqlist* list2, Seqlist * result){
    int i=0,j=0; // 定义两个“指针”分别指向两个顺序表
    while(i<list1->length && j<list2->length){
        if(list1->data[i]<list2->data[j]){
            insertElemt(result,list1->data[i]);
            i++;
        }else{
            insertElemt(result, list2->data[j]);
            j++;
        }
    }
    if(i<list1->length){
        for(int k=i;k<list1->length;k++){
            insertElemt(result, list1->data[k]);
        }
    }
    if(j<list2->length){
        for(int k=j;k<list2->length;k++){
            insertElemt(result, list2->data[k]);
        }
    }
}
// 打印顺序表
void PrintList(Seqlist* L){
    if(L->length==0){
        printf("该顺序表为空！\n");
        return;
    }
    for(int i=0;i<L->length;i++){
        printf("%d  ",L->data[i]);
    }
    printf("\n");
}
int main(){
    // 定义顺序表
    Seqlist list1,list2;
    initSqlist(&list1), initSqlist(&list2);
    insertElemt(&list1,2);
    insertElemt(&list1,11);
    insertElemt(&list1,54);
    printf("list1:");
    PrintList(&list1);
    insertElemt(&list2, 11);
    insertElemt(&list2, 25);
    insertElemt(&list2, 36);
    printf("list2:");
    PrintList(&list2);
    // 合并有序表
    Seqlist result;
    initSqlist(&result);
    mergeList(&list1, &list2, &result);
    printf("result:");
    PrintList(&result);
    return 0;
}